--liquibase formatted sql

--changeset hei:create_table_points

--preconditions onFail:WARN
--comment: /* Создаем таблицу для факультетов и их очков, если она еще не существует */
CREATE TABLE IF NOT EXISTS points
(
    id      SERIAL      NOT NULL PRIMARY KEY,
    points  INT         NOT NULL,
    house   VARCHAR(30) NOT NULL,
    version BIGINT DEFAULT 0
);
--rollback drop table points;

--comment: /* Создаем уникальный индекс на поле house, если он еще не существует (чтобы факультеты не дублировались) */
CREATE UNIQUE INDEX IF NOT EXISTS idx_house ON points (house);
--rollback alter table points drop index idx_house;

--changeset hei:create_table_professors

--preconditions onFail:WARN
--comment: /* Создаем таблицу для профессоров, если она еще не существует */
CREATE TABLE IF NOT EXISTS professors
(
    id   UUID DEFAULT gen_random_uuid() PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);
--rollback drop table professors;

--comment: /* Создаем уникальный индекс на поле name, если он еще не существует (чтобы професоры не дублировались) */
CREATE UNIQUE INDEX IF NOT EXISTS idx_name ON professors (name);
--rollback alter table professors drop index idx_name;

--changeset hei:create_table_points_log

--preconditions onFail:WARN
--comment: /* Создаем таблицу логов, если она еще не существует */
CREATE TABLE IF NOT EXISTS points_log
(
    id            UUID               DEFAULT gen_random_uuid() PRIMARY KEY,
    time          TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    professors_id UUID REFERENCES professors (id),
    house_id      INT REFERENCES points (id),
    points        INT
);
--rollback drop table points_log
